// import { getItem, setItem } from '@/utils/storage'
// import storage from '@/utils/storage'
import * as storage from '@/utils/storage' // 一次性导入该模块中导出的所有内容，是一个对象形式：{ getItem, setItem, removeItem, default: { getItem, setItem, removeItem } }

// 在页面第一次加载时，从 localStorage 中读取数据，作为初始化的值
// 常量的名字有一个规范，就是全大写，多个单词之间用下划线
const USER_TOKEN_KEY = 'userToken'
// const userToken = JSON.parse(localStorage.getItem('userToken'))
// const userToken = getItem('userTOken')
const userToken = storage.getItem(USER_TOKEN_KEY)
let token = null
// 这里为什么要判断一下，因为userToken可能是null，因为localStorage中可能没有数据（比如一个新用户第一次进入页面时），所以拿出来是个null，如果是null，直接去 .token 就相当于是 null.token，程序就会报错，所以要先判断一下
if (userToken) {
  token = userToken.token
}

export default {
  namespaced: true,
  state: {
    token,
  },
  getters: {},
  mutations: {
    // userToken 包含 token 和 refresh_token
    changeUserToken(state, userToken) {
      if (userToken) {
        state.token = userToken.token
        // localStorage.setItem('userToken', JSON.stringify(userToken))
        // setItem('userToken', userToken)
        storage.setItem(USER_TOKEN_KEY, userToken)
      } else {
        state.token = null
        storage.removeItem(USER_TOKEN_KEY)
      }
    },
  },
  actions: {},
}
